# list 可以一次性存储多个数据，且可以为不同数据类型
list_name = ['Yang','Zhao','Ma']
print(list_name[0])

# 1. index():返回指定数据所在位置的下标
print(list_name.index('Zhao'))

# 2. count()
print(list_name.count('Yangss'))

# 3. len(): 访问列表长度，即列表中数据的个数
print(len(list_name))
for i, e in enumerate(list_name):
    print(i, e)

# 判断是否存在
# in: 判断指定数据在某个列表序列，如果在返回True，否则返回False
# not in 判断指定数据不在某个序列
print('Yang' in list_name)
print('Mahong' not in list_name)

# 增加数据：
# append() 列表结尾追加数据，如果追加的是一个序列，则追加整个序列到列表
list1 = ['Yang','Zhao','Ma']
list2= ['zhao','qian','sun']
list1.append('li')
list1.append(list2)
print(list1)
# extend(): 列表结尾追加数据，如果数据是一个序列，则将这个序列的数据逐一添加到列表
list3 = ['Yang','Zhao','Ma']
list3.extend(list2)
print(list3)
# insert(): 指定位置新增数据
list4 = ['HE','LV','SHI']
list4.insert(1,'FAN')
print(list4)

# 删除
# del 目标
name_list = ['Yang','Zhao','Ma']
# del(name_list)   # 删除整个列表，print 列表不存在
del name_list[0] # 删除指定下标的数据
print(name_list)

# pop  删除指定下标的数据，如果不指定下标，默认删除最后一个数据
# 无论是按照下标还是删除最后一个数据，pop函数都会返回这个被删除的数据
name_list1 = ['Yang','Zhao','Ma']
print(name_list1.pop()) # Ma
print(name_list1)       # ['Yang', 'Zhao']

# remove(): 移除列表中某个数据的第一个匹配项
name_list2 = ['Yang','Zhao','Ma','Zhao']
name_list2.remove('Zhao')
print(name_list2)
# clear(): 清空列表
name_list2.clear()
print(name_list2)

# modify
car_list = ['audi','xiaomi','toyota','ford']
# 1.修改指定下标的数据
car_list[1] = 'bmw'
print(car_list)
# 2.逆序 reverse()
list22 = [1,2,3,4,5]
# list22.reverse()
print(list22)

# sort() 排序  升序 降序
# 列表序列.sort(key=None,reverse=False)
# reverse表示排序规则，reverse=True降序，reverse=False升序 （默认）
list22.sort(reverse=True)
print(list22)

# 复制
# copy()
car_list1 = ['audi','xiaomi','toyota','ford']
car_list2 = car_list1.copy()
print(car_list2)
